<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //箭头函数: 一种箭头语法的函数

        //ES5函数
        //1.赋值式 匿名式  只会变量提升
        // fn();//报错  fn 是undefined  undefined不是一个函数,不能加()调用
        // var fn = function () {
        //     console.log("fn");
        // }

        //2.命名式 声名式   会整体提升
        // function fn() {
        //     console.log("fn");
        // }
        // fn1()

        //ES6箭头函数: 赋值式函数可以改成箭头函数
        // var fn = function () {
        //     console.log("fn");// fn
        // }
        // var fn = () => {
        //     console.log("fn");// fn
        // }

        // fn();


        // 箭头函数写法:如果是一个参数,可以省略小括号,没有arguments隐藏参数,可以通过rest剩余参数代替
        // var fn = function (a) {
        //     console.log(a);
        // }
        // var fn = a => {
        //     console.log(a);
        // }
        // fn(10);

        // var fn = (a, b) => {
        //     console.log(a, b);
        // }
        // fn(1, 2);

        //注意: 箭头函数没有arguments参数
        // var fn =function(){
        //     console.log(arguments);
        // }
        // var fn = (...args)=>{
        //     // console.log(arguments);// 报错
        //     console.log(args);//1, 2, 3
        // }
        // fn(1,2,3)

        //箭头函数 自带return ,隐式返还
        //箭头函数后面如果不写大括号会自动返还值
        // var fn = function (a) {
        //     return a;
        // };

        // var fn = a => {
        //     return a;
        // }
        // var fn = a => a;
        // console.log(fn(10)); //10

        // var fn = ()=>{name:"张三",age:20}; // 错误的；
        var fn = () => {
            return {
                name: "张三",
                age: 20
            }
        }
        console.log(fn(10)); //{name: '张三', age: 20}

        var fn = () => ({
            name: "张安",
            age: 20
        });
        console.log(fn()); //{name: '张安', age: 20}



        var data = [{
                id: 1,
                name: '小明',
                age: 24,
                gender: '男'
            },
            {
                id: 2,
                name: '小芳',
                age: 30,
                gender: '女'
            },
            {
                id: 3,
                name: '小美',
                age: 31,
                gender: '女'
            },
            {
                id: 4,
                name: '小刚',
                age: 21,
                gender: '男'
            },
            {
                id: 5,
                name: '小琪',
                age: 18,
                gender: '女'
            }
        ];
        //年龄大于20 且是女生
        let res = data.filter(item => item.age > 20).filter(item => item.gender === "女");
        console.log(res);
    </script>
</body>

</html>